package com.qf.smsplatform.webmaster.controller;

import com.qf.smsplatform.webmaster.pojo.TAdminUser;
import com.qf.smsplatform.webmaster.service.api.CacheService;
import com.qf.smsplatform.webmaster.service.api.SearchService;
import com.qf.smsplatform.webmaster.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;


/**
 * 搜索服务
 */
@RestController
public class SearchController {

    @Resource
    private SearchService searchService;

    @Resource
    private CacheService cacheService;


    @RequestMapping("/sys/search/list")
    public TableData smssearch(SearchPojo criteria) {
        TAdminUser userEntity = ShiroUtils.getUserEntity(); // 获取当前登录用户的信息,类似从Session中获取用户登录的信息
        Integer clientid = userEntity.getClientid();   // 获取用户的clientID
        if (clientid != 0) {//非管理员只能查自己         // 如果不是超级管理员,设置clientID
            criteria.setClientID(clientid);
        }
        criteria.setHighLightPostTag("</span>");            // 设置高亮信息
        criteria.setHighLightPreTag("<span style='color:red'>");
        String str = JsonUtil.getJSON(criteria);            // 将页面的参数和自己封装的内容设置为了JSON
        Long count = searchService.searchLogCount(str);     // 根据参数,查询数据的总条数
        if (count != null && count > 0) {           // 当前客户查询的短信有数据
            List<Map> list = searchService.searchLog(str);      // 查询指定的数据
            for (Map map : list) {
                String clientID = String.valueOf(map.get("clientID"));      // 获取clientID
                Map<String, String> hmget = cacheService.hMGet("CLIENT:" + clientID);  // 根据缓存模块,查询了当前客户的全部信息
                String corpname = hmget.get("corpname");     //  缓存中的内容,查询公司名称,封装到当前的map里
                map.put("corpname", corpname);
                String sendTime = (String) map.get("sendTime");
                map.put("sendTimeStr", sendTime);             // 将sendTimeStr的内容设置为了null
            }
            return new TableData(count, list);
        }
        return new TableData(0, null);
    }


}
